package com.tencent.qf.team.dao;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.tencent.qf.team.dto.db.GuiderOrderCpsMultiUserstatisticDo;
import com.tencent.qf.team.dto.db.GuiderOrderCpsMultiUserstatisticResDo;
import com.tencent.qf.team.dto.db.GuiderOrderCpsPaginateDo;
import com.tencent.qf.team.dto.db.GuiderOrderCpsPersonalTotalDo;
import com.tencent.qf.team.dto.db.GuiderOrderGoodsCpsPaginateDo;
import com.tencent.qf.team.dto.db.GuiderShareGoodsOrderStatisticDo;
import com.tencent.qf.team.dto.db.GuiderShareGoodsOrderStatisticResDo;
import com.tencent.qf.team.dto.db.UserOrderCpsStatisticDo;
import com.tencent.qf.team.dto.response.GuiderOrderCpsPaginateResponse;
import com.tencent.qf.team.dto.response.GuiderOrderCpsPersonalTotalResponse;
import com.tencent.qf.team.dto.response.GuiderOrderGoodsCpsPaginateResponse;
import com.tencent.qf.team.dto.response.UserOrderCpsStatisticResponse;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@DS("orderdb")
@Mapper
public interface TyOrderDao {

    /**
     * 小B(包含下属)维度-个人订单总计
     *
     * @param request
     * @return
     */
    GuiderOrderCpsPersonalTotalResponse guiderOrderCpsPersonalTotal(GuiderOrderCpsPersonalTotalDo request);

    /**
     * 小B(包含下属)维度订单-分页获取订单明细
     *
     * @param paginateDo
     * @return
     */
    List<GuiderOrderCpsPaginateResponse> guiderOrderCpsPaginate(GuiderOrderCpsPaginateDo paginateDo);

    /**
     * 小B(包含下属)维度-订单商品分页
     *
     * @param paginateDo
     * @return
     */
    List<GuiderOrderGoodsCpsPaginateResponse> guiderOrderGoodsCpsPaginate(GuiderOrderGoodsCpsPaginateDo paginateDo);

    /**
     * 运营平台_小b订单业绩汇总
     *
     * @param multiUserstatisticDo
     * @return
     */
    List<GuiderOrderCpsMultiUserstatisticResDo> guiderOrderCpsMultiUserstatistic(GuiderOrderCpsMultiUserstatisticDo multiUserstatisticDo);

    /**
     * 用户个人(不包含下属)维度累计聚合
     *
     * @param userOrderCpsStatisticDo
     * @return
     */
    List<UserOrderCpsStatisticResponse> userOrderCpsStatistic(UserOrderCpsStatisticDo userOrderCpsStatisticDo);

    GuiderShareGoodsOrderStatisticResDo guiderShareGoodsOrderStatistic(GuiderShareGoodsOrderStatisticDo orderStatisticDo);

    GuiderShareGoodsOrderStatisticResDo guiderShareGoodsOrderStatisticV2(GuiderShareGoodsOrderStatisticDo orderStatisticDo);
}